Skip to main content

Copilot 拡張機能の構築について

の開発プロセスについて説明します。

この機能を使用できるユーザーについて

、、または プランをお持ちのすべてのユーザーは、 を使用できます。

または プランを所有する organization や Enterprise では、organization の所有者と Enterprise の管理者は へのアクセスを許可できます。

は、GitHub Enterprise Server では使用できません。

について

は、 の機能を拡張させる統合であり、開発者は外部ツール、サービス、カスタム動作をチャット エクスペリエンスに取り込むことができます。 を使用すると、次のようなさまざまな方法で の機能を拡張できます。

  • ドキュメントのクエリ: を使用すると、 がサード パーティのドキュメント サービスに対してクエリを実行して、特定のトピックに関する情報を見つけることができます。
  • AI 支援コーディング: では、サードパーティの AI モデルを使用してコードの提案を提供できます。
  • データ取得: を使用すると、 がサード パーティのデータ サービスに対してクエリを実行して、特定のトピックに関する情報を取得することができます。
  • アクションの実行: を使用すると、 でメッセージ ボードへの投稿や外部システムにある追跡アイテムの更新など、特定のアクションを実行できます。

の構築について

は 、GitHub Appsを使用して構築された の一種です。 は、クロスプラットフォームの互換性とアプリ管理、GitHub からのサポートを必要とする開発者に最適です。

サポートされているクライアントと IDE

クライアントと IDEサポート
Visual Studio Code
Visual Studio
GitHub.com
GitHub Mobile
JetBrains IDE
GitHub Codespaces
Vim/Neovim
Xcode

の可視性について

は、非公開、公開して共有可能、または公開して GitHub Marketplace に一覧表示することもできます。 どの可視性オプションを選択するかは、ユース ケースと対象ユーザーによって異なります。

  • プライベート拡張機能は、次のような大企業または会社によって好まれることが多いです。
    • より多くのカスタマイズとデータ アクセスの制御が必要である
    • 大量の内部ドキュメントおよびデータベースと統合する必要がある
    • 厳密なセキュリティ ポリシーにより、サード パーティのアクセス許可を承認することが困難である
  • パブリック拡張機能は、次の場合に適しています。
    • オープンソース プロジェクト
    • 企業内の組織全体でのコラボレーション開発と使用
    • GitHub Marketplace に公開する前にツールを共有し、フィードバックを受け取る
  • GitHub Marketplace 拡張機能は、次のことが必要なサード パーティに最適です。
    • 幅広いユーザーにサービスを提供する
    • GitHub と IDE の開発者ワークフローにツールを統合する
    • GitHub エコシステムを活用して、製品に対する認識を高める

のアクセス許可について

アクセス許可は、拡張機能がクエリに応答するために必要な認可のレベルに応じて、拡張機能ごとに異なります。 必要なアクセス許可は、拡張機能のインストール ページで、課金情報の手順の後、インストールと認可の手順の前に確認できます。

開発者向け: 少なくとも、**** のアクセス許可を [Read-only] に設定する必要があります。 その他のアクセス許可として、他の画面での書き込みアクションの実行や、GitHub 内のリポジトリおよび organization レベルのデータへの読み取りアクセス権の認可が含まれる場合があります。

ビルダー向け: 上記に加えて、ユーザーの編集者にローカル コンテキストを要求して、応答をさらに調整することもできます。 これを行うには、Copilot Editor Context アクセス許可を [Read-only] に設定する必要があります。 ユーザーには、必要な認可を与えるよう通知されます。

GitHub App のアクセス許可の詳細については、「GitHub アプリのアクセス許可を選択する」を参照してください

Organization リソースにアクセスするアクセス許可を付与する

Organization リソースにアクセスするためのアクセス許可を に付与できるのは、organization 管理者だけです。 Organization メンバーにアクセス権を付与するには:

  • Organization 管理者が拡張機能をインストールする必要があります。
  • Organization 管理者は、特定のリポジトリにアクセスするための拡張機能のアクセス許可を付与する必要があります。
  • Organization 管理者は、すべてまたは特定のリポジトリへのアクセスを認可する必要があります。

スキルセットとエージェントについて

スキルセットとエージェントは、Copilot の機能とコンテキストを で拡張する 2 つの方法です。 それらを使うと外部サービスと API を に統合できますが、それぞれ異なるユース ケースに対応し、異なるレベルの制御と複雑さを提供します。

  • スキルセットは軽量で効率化されており、最小限のセットアップで特定のタスク (データの取得や単純な操作など) を実行するために Copilot を必要とする開発者向けに設計されています。 それはルーティング、プロンプトの作成、関数の評価、応答の生成を自動的に処理するため、すばやく簡単な統合に最適です。 スキルセットの詳細については、「Copilot のスキルセットについて」を参照してください。
  • エージェントは、要求の処理方法と応答の生成方法を完全に制御する必要がある複雑な統合のためのものです。 それを使うと、カスタム ロジックの実装、他の LLM や Copilot API との統合、会話コンテキストの管理、ユーザー操作のすべての側面の処理を行うことができます。 エージェントはより多くのエンジニアリングとメンテナンスを必要としますが、高度なワークフローに対して最大限の柔軟性を提供します。 エージェントの詳細については、「Copilot エージェントについて」を参照してください。

コンテキストの受け渡しについて

GitHub App の設定で [Copilot Editor Context] のアクセス許可に対して [Read-only] アクセス レベルを有効にすることで、現在開いているファイルなどのコンテキストを がエディターから受け取れるようにできます。 「GitHub App の構成」の手順 10 を参照してください。

暗黙的および明示的なコンテキストが使用できない場合、または認可されていない場合、 は自動的にメッセージングを処理します。 コンテキストの受け渡しを有効にするには、ユーザーにアクセス許可を要求する必要があります。 コンテキストの受け渡しを有効にするには、次のことを行う必要があります。

  • 新しい参照型を処理できるように API を更新します。
  • ユーザーにアクセス許可を要求します。 アクセス許可の要求は、次のベスト プラクティスに従って行います。
    • 必要なコンテキストと、それが必要な対象を明確に伝えます。
    • 独自のアプリケーション ロジックと API で呼び出されるコンテキストが使用できない場合の適切なエラー処理を実装します。
    • コンテキストを使用できない場合は、このデータなしで可能な値を指定します。
    • 拡張機能に最低限必要なアクセス許可のみを要求します。

コンテキストの受け渡しでは、コンテンツの除外が考慮されます。これは、コンテキストの除外設定に登録されているすべてのファイル (. で始まるファイルを含む) を指します。

コンテキストの受け渡しの詳細については、「エージェントのコンテキストの受け渡し」を参照してください。

で API を使う

をビルドするには、GitHub API を使う必要があります。 必要に応じて、追加機能のために Copilot API を使用できます。 要求と応答の形式の詳細については、OpenAI API ドキュメントを参照してください。

メモ

Copilot API は、 ビルダーで使用できますが、これらのエンドポイントへのアクセスに使用できるのは、GitHub Apps および VS Code Chat 拡張機能のみです。

を構築するためのリソース

GitHub は、コード サンプル、CLI デバッグ ツール、クイック スタート SDK、およびユーザー フィードバック リポジトリを備えた、拡張機能ビルダー向けの包括的なツールキットを提供します。 詳細については、GitHub の copilot-extensions 組織を参照してください。

独自の を最初から作成する前に、既存の を調べて、GitHub App と統合し、そのしくみを確認することができます。 GitHub には、次のように、独自の の基礎として複製して使用できる、 の例がいくつか用意されています。

  • Blackbeard: 海賊などの要求に応答する単純な で、Copilot の LLM API と特別なシステム音声ガイダンスを使用します。 これは、 を構築する方法を学習するための開始点として適しています。 詳細については、「Blackbeard 」を参照してください。

  • GitHub Models: より複雑な です。この場合、GitHub Marketplace に記載されているさまざまな LLM について、 内から確認して操作できます。 詳細については、「GitHub Models 」を参照してください。

    メモ

    GitHub Models は パブリック プレビュー 段階であり、変更される可能性があります。 アクセスを要求するには、待機リストに登録します

  • 関数呼び出し: 関数呼び出しと確認ダイアログを示す Go で記述されたエージェントの例。 詳細については、「関数呼び出し拡張機能」を参照してください。

  • RAG 拡張機能: 取得拡張生成の簡単な実装を示す Go で記述されたエージェントの例。 詳細については、「RAG 拡張機能」を参照してください。

  • プレビュー SDK: 要求の検証、応答の書式設定、および API の操作を処理することで、 を構築するプロセスを簡略化する SDK。 これにより、ビルダーは、ツール、API、およびデータ ソースの への統合を合理化することで、定型ではなく拡張機能のコア機能に集中できます。 詳細については、「プレビュー SDK」を参照してください。

の構築について

メモ

GitHub のドキュメントでは、 ではなく、 の構築に重点を置いています。

と呼ばれる、Visual Studio Code に対して排他的でネイティブな を構築できます。 このオプションは、VS Code固有の API と機能を使用する拡張機能を構築したり、既存の VS Code 拡張機能を拡張したりする開発者に最適です。

VS Code チャット拡張機能とも呼ばれる 機能は、 の機能を拡張することで、 と同様に機能しますが、次のように大きく異なる点がいくつかあります。

  • VS Code チャット拡張機能は、VS Code でのみ使用できます。
  • VS Code チャット拡張機能では、より多くの VS Code の機能や API にアクセスでき、ローカル ワークスペース データへのアクセス、Visual Studio Code のインターフェイス操作、ローカル ファイルへの読み取り/書き込みアクセス権限など、エディター固有の操作が可能になります。
  • VS Code チャット機能は、GitHub Marketplace ではなく、VS Code Marketplace に発行されます。
  • VS Codeチャット拡張機能は、ユーザーのコンピューターに対してローカルであり、組織のポリシーで制御することはできません。

についての詳細は、Visual Studio Code ドキュメントの「チャット拡張機能」を参照してください。

参考資料